/**
 *                     Sidplayer and Stereo Sidplayer format support.
 *                     ----------------------------------------------
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
package de.quippy.sidplay.libsidplay.components.sidtune;

import static de.quippy.sidplay.libsidplay.common.SIDEndian.endian_16;
import static de.quippy.sidplay.libsidplay.components.sidtune.ISidTuneCfg.SIDTUNE_PSID2NG;
import static de.quippy.sidplay.libsidplay.components.sidtune.SidTune.SIDTUNE_CLOCK_ANY;
import static de.quippy.sidplay.libsidplay.components.sidtune.SidTune.SIDTUNE_COMPATIBILITY_C64;
import static de.quippy.sidplay.libsidplay.components.sidtune.SidTune.SIDTUNE_SPEED_CIA_1A;
import static de.quippy.sidplay.libsidplay.components.sidtune.SidTune.LoadStatus.LOAD_ERROR;
import static de.quippy.sidplay.libsidplay.components.sidtune.SidTune.LoadStatus.LOAD_NOT_MINE;
import static de.quippy.sidplay.libsidplay.components.sidtune.SidTune.LoadStatus.LOAD_OK;
import de.quippy.sidplay.libsidplay.components.sidtune.SidTune.LoadStatus;

public class Mus {

	//
	// sidtune format errors
	//

	public static final String _sidtune_txt_invalid = "ERROR: File contains invalid data";

	public static final String _sidtune_txt_format_mus = "C64 Sidplayer format (MUS)";

	public static final String _sidtune_txt_format_str = "C64 Stereo Sidplayer format (MUS+STR)";

	public static final String _sidtune_txt_notEnoughMemory = "ERROR: Not enough free memory";

	public static final String _sidtune_txt_sizeExceeded = "ERROR: Total file size too large";

	public static final int /* uint_least16_t */SIDTUNE_MUS_HLT_CMD = 0x14F;

	public static final int /* uint_least16_t */SIDTUNE_MUS_DATA_ADDR = 0x0900;

	public static final int /* uint_least16_t */SIDTUNE_SID1_BASE_ADDR = 0xd400;

	public static final int /* uint_least16_t */SIDTUNE_SID2_BASE_ADDR = 0xd500;

	private SidTune sidtune;

	private SidTuneInfo info;

	public Mus(SidTune sidtune) {
		this.sidtune = sidtune;
		this.info = sidtune.info;
	}

	protected LoadStatus MUS_fileSupport(
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */musBuf,
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */strBuf) {
		return MUS_load(musBuf, strBuf, true);
	}

	public static class Voice3Index {
		long voice3Index;
	}

	protected boolean MUS_detect(final short[] /* const void* */buffer,
			final int /* uint_least32_t */bufLen,
			Voice3Index /* uint_least32_t& */voice3Index) {
		// ATT: IN/OUT parameter!!!
		SmartPtr_sidtt /* <const uint8_t> */spMus = new SmartPtr_sidtt(
				(short[] /* const uint8_t* */) buffer, bufLen, false);
		// Skip load address and 3x length entry.
		long /* uint_least32_t */voice1Index = (2 + 3 * 2);
		// Add length of voice 1 data.
		voice1Index += endian_16(spMus.operatorAt(3), spMus.operatorAt(2));
		// Add length of voice 2 data.
		long /* uint_least32_t */voice2Index = voice1Index
				+ endian_16(spMus.operatorAt(5), spMus.operatorAt(4));
		// Add length of voice 3 data.
		voice3Index.voice3Index = voice2Index
				+ endian_16(spMus.operatorAt(7), spMus.operatorAt(6));
		return ((endian_16(spMus.operatorAt((int) (voice1Index - 2)), spMus
				.operatorAt((int) (voice1Index + 1 - 2))) == SIDTUNE_MUS_HLT_CMD)
				&& (endian_16(spMus.operatorAt((int) (voice2Index - 2)), spMus
						.operatorAt((int) (voice2Index + 1 - 2))) == SIDTUNE_MUS_HLT_CMD)
				&& (endian_16(spMus
						.operatorAt((int) (voice3Index.voice3Index - 2)), spMus
						.operatorAt((int) (voice3Index.voice3Index + 1 - 2))) == SIDTUNE_MUS_HLT_CMD) && spMus
				.operatorBool());
	}

	protected LoadStatus MUS_load(
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */musBuf,
			boolean init) {
		Buffer_sidtt /* <const uint_least8_t> */empty = new Buffer_sidtt();
		return MUS_load(musBuf, empty, init);
	}

	protected LoadStatus MUS_load(
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */musBuf,
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */strBuf,
			boolean init) {
		Voice3Index /* uint_least32_t */voice3Index = new Voice3Index();
		SmartPtr_sidtt /* <const uint8_t> */spPet = new SmartPtr_sidtt(musBuf
				.get(), sidtune.fileOffset, musBuf.len());
		if (!MUS_detect(spPet.tellBegin(), spPet.tellLength(), voice3Index))
			return LOAD_NOT_MINE;

		if (init) {
			info.songs = (info.startSong = 1);
			info.musPlayer = true;

			sidtune.songSpeed[0] = SIDTUNE_SPEED_CIA_1A;
			if (SIDTUNE_PSID2NG) {
				sidtune.clockSpeed[0] = SIDTUNE_CLOCK_ANY;
			}
		}

		// Check setting compatibility for MUS playback
		if ((info.compatibility != SIDTUNE_COMPATIBILITY_C64)
				|| (info.relocStartPage != 0) || (info.relocPages != 0)) {
			info.formatString = _sidtune_txt_invalid;
			return LOAD_ERROR;
		}

		{ // All subtunes should be CIA
			for (int /* uint_least16_t */i = 0; i < info.songs; i++) {
				if (sidtune.songSpeed[i] != SIDTUNE_SPEED_CIA_1A) {
					info.formatString = _sidtune_txt_invalid;
					return LOAD_ERROR;
				}
			}
		}

		sidtune.musDataLen = musBuf.len();
		info.loadAddr = SIDTUNE_MUS_DATA_ADDR;
		info.sidChipBase1 = SIDTUNE_SID1_BASE_ADDR;

		// No credits so extract them from the MUS files
		boolean credits = (sidtune.infoString[0] != null
				| sidtune.infoString[1] != null | sidtune.infoString[2] != null);

		// Voice3Index now is offset to text lines (uppercase Pet-strings).
		spPet.operatorPlusGleich((int) voice3Index.voice3Index);

		// Already have credits just skip over the ones in the MUS
		if (credits) {
			while (spPet.operatorAt(0) != 0)
				sidtune.convertPetsciiToAscii(spPet, null);
		}
		// Extract credits
		else {
			for (int line = info.numberOfInfoStrings = 0; spPet.operatorAt(0) != 0; line = ++info.numberOfInfoStrings) {
				if (line < 10) {
					StringBuffer infoLine = new StringBuffer();
					sidtune.convertPetsciiToAscii(spPet, infoLine);
					sidtune.infoString[line] = infoLine.toString();
					info.infoString[line] = sidtune.infoString[line];
				} else
					sidtune.convertPetsciiToAscii(spPet, new StringBuffer());
			}
		}
		spPet.operatorPlusPlus();

		// If we appear to have additional data at the end, check is it's
		// another mus file (but only if a second file isn't supplied)
		boolean stereo = false;
		if (!strBuf.isEmpty()) {
			if (!MUS_detect(strBuf.get(), strBuf.len(), voice3Index))
				return LOAD_ERROR;
			spPet.setBuffer(strBuf.get(), strBuf.len());
			stereo = true;
		} else { // For MUS + STR via stdin the files come combined
			if (spPet.good()) {
				int /* uint_least16_t */pos = (int /* uint_least16_t */) spPet
						.tellPos();
				if (MUS_detect(spPet.tellBegin(), spPet.tellLength() - pos,
						voice3Index)) {
					sidtune.musDataLen = pos;
					stereo = true;
				}
			}
		}

		if (stereo) { // Voice3Index now is offset to text lines (uppercase
			// Pet-strings).
			spPet.operatorPlusGleich((int) voice3Index.voice3Index);

			// Already have credits just skip over the ones in the MUS
			if (credits) {
				while (spPet.operatorAt(0) != 0)
					sidtune.convertPetsciiToAscii(spPet, null);
			}
			// Extract credits
			else {
				for (int line = info.numberOfInfoStrings; spPet.operatorAt(0) != 0; line = ++info.numberOfInfoStrings) {
					if (line < 10) {
						StringBuffer infoLine = new StringBuffer();
						sidtune.convertPetsciiToAscii(spPet, infoLine);
						sidtune.infoString[line] = infoLine.toString();
					} else
						sidtune.convertPetsciiToAscii(spPet, null);
				}
			}

			info.sidChipBase2 = SIDTUNE_SID2_BASE_ADDR;
			info.formatString = _sidtune_txt_format_str;
		} else {
			info.sidChipBase2 = 0;
			info.formatString = _sidtune_txt_format_mus;
		}
		MUS_setPlayerAddress();

		if (!credits) { // Remove trailing empty lines.
			final int lines = info.numberOfInfoStrings;
			{
				for (int line = lines - 1; line >= 0; line--) {
					if ((info.infoString[line]).length() == 0)
						--info.numberOfInfoStrings;
					else
						break;
				}
			}

			// Three strings are assumed to be credits in
			// the format title, author and released, which
			// these are not
			if (info.numberOfInfoStrings == 3) {
				info.infoString[3] = sidtune.infoString[3] != null ? sidtune.infoString[3]
						: "";
				info.numberOfInfoStrings++;
			}
		}
		return LOAD_OK;
	}

	private static final short /* uint8_t */_sidtune_sidplayer1[] = {
			0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x61, 0xe1, 0x60, 0x01, 0x02, 0x04, 0x00, 0x07, 0x0e, 0x02,
			0x02, 0xfe, 0x02, 0x02, 0xfe, 0xfe, 0x00, 0x01, 0x00, 0xff, 0x00,
			0x02, 0x04, 0x05, 0x07, 0x09, 0x0b, 0x1e, 0x18, 0x8b, 0x7e, 0xfa,
			0x06, 0xac, 0xf3, 0xe6, 0x8f, 0xf8, 0x2e, 0x86, 0x8e, 0x96, 0x9f,
			0xa8, 0xb3, 0xbd, 0xc8, 0xd4, 0xe1, 0xee, 0xfd, 0x8c, 0x78, 0x64,
			0x50, 0x3c, 0x28, 0x14, 0x00, 0x00, 0x02, 0x03, 0x05, 0x07, 0x08,
			0x0a, 0x0c, 0x0d, 0x0f, 0x11, 0x12, 0x00, 0xe0, 0x00, 0x05, 0x0a,
			0x0f, 0xf9, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
			0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x00, 0x50, 0x00, 0x00,
			0x60, 0x00, 0x00, 0x70, 0x00, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00,
			0x00, 0xa0, 0x00, 0xa9, 0x00, 0x8d, 0x00, 0xe0, 0xa2, 0x95, 0xa0,
			0x42, 0xad, 0xa6, 0x02, 0xf0, 0x04, 0xa2, 0x25, 0xa0, 0x40, 0x8e,
			0x5b, 0xe1, 0x8c, 0x5c, 0xe1, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
			0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
			0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x60, 0xa9, 0x00, 0x8d,
			0x00, 0xe0, 0x86, 0x61, 0x84, 0x62, 0xa0, 0xbc, 0x99, 0x00, 0xe0,
			0x88, 0xd0, 0xfa, 0xa0, 0x72, 0x99, 0xbc, 0xe0, 0x88, 0xd0, 0xfa,
			0x8d, 0x15, 0xd4, 0x8d, 0x16, 0xd4, 0xa9, 0x08, 0x8d, 0x25, 0xe0,
			0x8d, 0x17, 0xd4, 0x8d, 0x26, 0xe0, 0x8d, 0x18, 0xd4, 0xa9, 0x90,
			0x8d, 0x27, 0xe0, 0xa9, 0x60, 0x8d, 0x28, 0xe0, 0xa9, 0x0c, 0x8d,
			0x29, 0xe0, 0xad, 0x5b, 0xe1, 0x8d, 0x2d, 0xe0, 0xad, 0x5c, 0xe1,
			0x8d, 0x2e, 0xe0, 0xa9, 0xff, 0x8d, 0xcc, 0xe0, 0xa9, 0xd4, 0x85,
			0x64, 0xa2, 0x02, 0xa9, 0xff, 0x9d, 0x0b, 0xe0, 0xa9, 0x01, 0x9d,
			0x30, 0xe0, 0x9d, 0x2a, 0xe0, 0x8a, 0x9d, 0x33, 0xe0, 0x9d, 0xae,
			0xe0, 0xa9, 0x04, 0x9d, 0x39, 0xe0, 0xbd, 0xa8, 0xe1, 0x9d, 0xba,
			0xe0, 0xa9, 0x5b, 0x9d, 0x7e, 0xe0, 0xbd, 0x65, 0xe1, 0x85, 0x63,
			0xa9, 0x00, 0xa8, 0x91, 0x63, 0xc8, 0x91, 0x63, 0xc8, 0x91, 0x63,
			0xa9, 0x08, 0x9d, 0x17, 0xe0, 0x9d, 0x9c, 0xe0, 0xc8, 0x91, 0x63,
			0xc8, 0x91, 0x63, 0xa9, 0x40, 0x9d, 0x1a, 0xe0, 0x91, 0x63, 0xa9,
			0x20, 0x9d, 0x1d, 0xe0, 0xc8, 0x91, 0x63, 0xa9, 0xf5, 0x9d, 0x20,
			0xe0, 0xc8, 0x91, 0x63, 0xca, 0x10, 0xa4, 0x8a, 0xa2, 0x17, 0x9d,
			0x3e, 0xe1, 0xca, 0x10, 0xfa, 0xa5, 0x61, 0x18, 0x69, 0x06, 0x85,
			0x63, 0xa9, 0x00, 0xaa, 0xa8, 0x65, 0x62, 0x85, 0x64, 0x9d, 0xab,
			0xe0, 0x9d, 0xb4, 0xe0, 0xa5, 0x63, 0x9d, 0xa8, 0xe0, 0x9d, 0xb1,
			0xe0, 0x18, 0x71, 0x61, 0x85, 0x63, 0xa5, 0x64, 0xc8, 0x71, 0x61,
			0xc8, 0xe8, 0xe0, 0x03, 0xd0, 0xe0, 0xa6, 0x63, 0xa8, 0x60, 0xa9,
			0x00, 0x8d, 0x04, 0xd4, 0x8d, 0x0b, 0xd4, 0x8d, 0x12, 0xd4, 0x8d,
			0x01, 0xd4, 0x8d, 0x08, 0xd4, 0x8d, 0x0f, 0xd4, 0xa9, 0x08, 0x8d,
			0x17, 0xd4, 0xad, 0x5b, 0xe1, 0x8d, 0x04, 0xdc, 0xad, 0x5c, 0xe1,
			0x8d, 0x05, 0xdc, 0x60, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
			0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x60, 0xa9, 0x08, 0x8d,
			0x00, 0xe0, 0x6c, 0x5d, 0xe1, 0xea, 0xea, 0xea, 0xad, 0x00, 0xe0,
			0x30, 0xf0, 0x09, 0x80, 0xa8, 0x29, 0x07, 0xf0, 0xee, 0xd8, 0x8c,
			0x00, 0xe0, 0xea, 0xa5, 0xfb, 0x8d, 0x56, 0xe1, 0xa5, 0xfc, 0x8d,
			0x57, 0xe1, 0xa5, 0xfd, 0x8d, 0x58, 0xe1, 0xa5, 0xfe, 0x8d, 0x59,
			0xe1, 0xa5, 0xff, 0x8d, 0x5a, 0xe1, 0xad, 0x23, 0xe0, 0x18, 0x6d,
			0xd9, 0xe0, 0x48, 0x29, 0x07, 0xa8, 0xad, 0xdc, 0xe0, 0x69, 0x00,
			0x85, 0xff, 0x68, 0x46, 0xff, 0x6a, 0x46, 0xff, 0x6a, 0x46, 0xff,
			0x6a, 0x18, 0x6d, 0x24, 0xe0, 0x8c, 0x15, 0xd4, 0x8d, 0x16, 0xd4,
			0xad, 0x25, 0xe0, 0x8d, 0x17, 0xd4, 0xad, 0x26, 0xe0, 0x8d, 0x18,
			0xd4, 0xa9, 0xd4, 0x85, 0xfc, 0xa2, 0x00, 0xad, 0x00, 0xe0, 0x3d,
			0x62, 0xe1, 0xf0, 0x51, 0xbd, 0x65, 0xe1, 0x85, 0xfb, 0xbd, 0x0e,
			0xe0, 0x18, 0x7d, 0x51, 0xe0, 0xa8, 0xbd, 0x11, 0xe0, 0x7d, 0x54,
			0xe0, 0x48, 0x98, 0x18, 0x7d, 0xcd, 0xe0, 0xa0, 0x00, 0x91, 0xfb,
			0x68, 0x7d, 0xd0, 0xe0, 0xc8, 0x91, 0xfb, 0xbd, 0x14, 0xe0, 0x18,
			0x7d, 0x69, 0xe0, 0x85, 0xff, 0xbd, 0x17, 0xe0, 0x7d, 0x6c, 0xe0,
			0x48, 0xa5, 0xff, 0x18, 0x7d, 0xd3, 0xe0, 0xc8, 0x91, 0xfb, 0x68,
			0x7d, 0xd6, 0xe0, 0xc8, 0x91, 0xfb, 0xbd, 0x1d, 0xe0, 0xc8, 0xc8,
			0x91, 0xfb, 0xbd, 0x20, 0xe0, 0xc8, 0x91, 0xfb, 0xe8, 0xe0, 0x03,
			0xd0, 0xa2, 0xac, 0x1a, 0xe0, 0xae, 0x1b, 0xe0, 0xad, 0x1c, 0xe0,
			0x8c, 0x04, 0xd4, 0x8e, 0x0b, 0xd4, 0x8d, 0x12, 0xd4, 0xae, 0x2d,
			0xe0, 0xac, 0x2e, 0xe0, 0x8e, 0x04, 0xdc, 0x8c, 0x05, 0xdc, 0xad,
			0x1b, 0xd4, 0x8d, 0xbe, 0xe0, 0xad, 0x1c, 0xd4, 0x8d, 0xbf, 0xe0,
			0xa2, 0x00, 0xad, 0x00, 0xe0, 0x3d, 0x62, 0xe1, 0xf0, 0x10, 0x8e,
			0x2f, 0xe0, 0x20, 0x36, 0xe5, 0xad, 0x00, 0xe0, 0x29, 0x78, 0xf0,
			0x03, 0x4c, 0x0c, 0xe5, 0xe8, 0xe0, 0x03, 0xd0, 0xe3, 0xad, 0xc9,
			0xe0, 0xd0, 0x52, 0xad, 0xca, 0xe0, 0x0d, 0xcb, 0xe0, 0xf0, 0x78,
			0xad, 0xdf, 0xe0, 0xd0, 0x28, 0xad, 0xca, 0xe0, 0xf0, 0x28, 0x18,
			0x6d, 0xbd, 0xe0, 0xb0, 0x07, 0xcd, 0xcc, 0xe0, 0x90, 0x60, 0xf0,
			0x5e, 0xa9, 0x00, 0x8d, 0xdf, 0xe0, 0xad, 0xcb, 0xe0, 0xf0, 0x54,
			0xee, 0xdf, 0xe0, 0xad, 0xbd, 0xe0, 0xed, 0xcb, 0xe0, 0x4c, 0xb4,
			0xe4, 0xad, 0xcb, 0xe0, 0xf0, 0xd3, 0xad, 0xbd, 0xe0, 0x38, 0xed,
			0xcb, 0xe0, 0xb0, 0x3a, 0xa9, 0x00, 0x8d, 0xdf, 0xe0, 0xad, 0xca,
			0xe0, 0xd0, 0x30, 0xee, 0xdf, 0xe0, 0xd0, 0x28, 0xce, 0xe0, 0xe0,
			0xd0, 0x29, 0xad, 0xdf, 0xe0, 0xd0, 0x11, 0xee, 0xdf, 0xe0, 0xad,
			0xcb, 0xe0, 0xd0, 0x02, 0xa9, 0x20, 0x8d, 0xe0, 0xe0, 0xa9, 0x00,
			0xf0, 0x10, 0xce, 0xdf, 0xe0, 0xad, 0xca, 0xe0, 0xd0, 0x02, 0xa9,
			0x20, 0x8d, 0xe0, 0xe0, 0xad, 0xcc, 0xe0, 0x8d, 0xbd, 0xe0, 0xa2,
			0x00, 0xbd, 0xc3, 0xe0, 0xf0, 0x44, 0xa9, 0x00, 0x85, 0xff, 0xbc,
			0xc0, 0xe0, 0xb9, 0xbd, 0xe0, 0xbc, 0xc6, 0xe0, 0xf0, 0x0e, 0x30,
			0x08, 0x0a, 0x26, 0xff, 0x88, 0xd0, 0xfa, 0xf0, 0x04, 0x4a, 0xc8,
			0xd0, 0xfc, 0xbc, 0xc3, 0xe0, 0x88, 0xd0, 0x0b, 0x9d, 0xcd, 0xe0,
			0xa5, 0xff, 0x9d, 0xd0, 0xe0, 0x4c, 0x02, 0xe5, 0x88, 0xd0, 0x0b,
			0x9d, 0xd3, 0xe0, 0xa5, 0xff, 0x9d, 0xd6, 0xe0, 0x4c, 0x02, 0xe5,
			0x8d, 0xd9, 0xe0, 0xa5, 0xff, 0x8d, 0xdc, 0xe0, 0xe8, 0xe0, 0x03,
			0xd0, 0xb2, 0xad, 0x00, 0xe0, 0x29, 0x7f, 0x8d, 0x00, 0xe0, 0xad,
			0x56, 0xe1, 0x85, 0xfb, 0xad, 0x57, 0xe1, 0x85, 0xfc, 0xad, 0x58,
			0xe1, 0x85, 0xfd, 0xad, 0x59, 0xe1, 0x85, 0xfe, 0xad, 0x5a, 0xe1,
			0x85, 0xff, 0x6c, 0x5d, 0xe1, 0xbd, 0x60, 0xe0, 0xd0, 0x03, 0x4c,
			0x9f, 0xe6, 0x4c, 0xba, 0xe5, 0xde, 0x30, 0xe0, 0xd0, 0x03, 0x4c,
			0xa0, 0xe6, 0xbd, 0x36, 0xe0, 0x30, 0xe8, 0xd0, 0x1a, 0xbd, 0x3f,
			0xe0, 0xf0, 0x05, 0xde, 0x3f, 0xe0, 0xd0, 0x10, 0xbd, 0x39, 0xe0,
			0xdd, 0x30, 0xe0, 0x90, 0x08, 0xbd, 0x1a, 0xe0, 0x29, 0xfe, 0x9d,
			0x1a, 0xe0, 0xbd, 0x42, 0xe0, 0xf0, 0x56, 0x0a, 0xbd, 0x0e, 0xe0,
			0xb0, 0x1d, 0x7d, 0x45, 0xe0, 0x9d, 0x0e, 0xe0, 0xa8, 0xbd, 0x11,
			0xe0, 0x7d, 0x48, 0xe0, 0x9d, 0x11, 0xe0, 0x48, 0x98, 0xdd, 0x8d,
			0xe0, 0x68, 0xfd, 0x90, 0xe0, 0xb0, 0x1f, 0x90, 0x2e, 0xfd, 0x45,
			0xe0, 0x9d, 0x0e, 0xe0, 0xbd, 0x11, 0xe0, 0xfd, 0x48, 0xe0, 0x9d,
			0x11, 0xe0, 0xbd, 0x8d, 0xe0, 0xdd, 0x0e, 0xe0, 0xbd, 0x90, 0xe0,
			0xfd, 0x11, 0xe0, 0x90, 0x11, 0xbd, 0x8d, 0xe0, 0x9d, 0x0e, 0xe0,
			0xbd, 0x90, 0xe0, 0x9d, 0x11, 0xe0, 0xa9, 0x00, 0x9d, 0x42, 0xe0,
			0xbd, 0x60, 0xe0, 0xf0, 0x55, 0xbd, 0x4b, 0xe0, 0xf0, 0x4b, 0xa0,
			0x00, 0xde, 0x4e, 0xe0, 0xd0, 0x31, 0xbd, 0x51, 0xe0, 0x1d, 0x54,
			0xe0, 0xd0, 0x1b, 0xbd, 0x5d, 0xe0, 0x9d, 0x57, 0xe0, 0x9d, 0x4e,
			0xe0, 0xbd, 0x4b, 0xe0, 0x0a, 0xbd, 0x5a, 0xe0, 0x90, 0x04, 0x49,
			0xff, 0x69, 0x00, 0x9d, 0x4b, 0xe0, 0xd0, 0x10, 0xbd, 0x57, 0xe0,
			0x9d, 0x4e, 0xe0, 0x98, 0x38, 0xfd, 0x4b, 0xe0, 0x9d, 0x4b, 0xe0,
			0xc9, 0x00, 0x10, 0x01, 0x88, 0x18, 0x7d, 0x51, 0xe0, 0x9d, 0x51,
			0xe0, 0x98, 0x7d, 0x54, 0xe0, 0x9d, 0x54, 0xe0, 0xbd, 0x36, 0xe0,
			0x30, 0x15, 0xbd, 0x93, 0xe0, 0xf0, 0x10, 0x18, 0x7d, 0x14, 0xe0,
			0x9d, 0x14, 0xe0, 0xbd, 0x96, 0xe0, 0x7d, 0x17, 0xe0, 0x9d, 0x17,
			0xe0, 0xbd, 0x63, 0xe0, 0xf0, 0x4b, 0xa0, 0x00, 0xde, 0x66, 0xe0,
			0xd0, 0x31, 0xbd, 0x69, 0xe0, 0x1d, 0x6c, 0xe0, 0xd0, 0x1b, 0xbd,
			0x72, 0xe0, 0x9d, 0x6f, 0xe0, 0x9d, 0x66, 0xe0, 0xbd, 0x63, 0xe0,
			0x0a, 0xbd, 0x75, 0xe0, 0x90, 0x04, 0x49, 0xff, 0x69, 0x00, 0x9d,
			0x63, 0xe0, 0xd0, 0x10, 0xbd, 0x6f, 0xe0, 0x9d, 0x66, 0xe0, 0x98,
			0x38, 0xfd, 0x63, 0xe0, 0x9d, 0x63, 0xe0, 0xc9, 0x00, 0x10, 0x01,
			0x88, 0x18, 0x7d, 0x69, 0xe0, 0x9d, 0x69, 0xe0, 0x98, 0x7d, 0x6c,
			0xe0, 0x9d, 0x6c, 0xe0, 0xbd, 0x36, 0xe0, 0x10, 0x03, 0x4c, 0x9f,
			0xe6, 0xa0, 0x00, 0xbd, 0xa2, 0xe0, 0xf0, 0x1c, 0x10, 0x01, 0xc8,
			0x18, 0x6d, 0x23, 0xe0, 0x48, 0x29, 0x07, 0x8d, 0x23, 0xe0, 0x68,
			0x6a, 0x4a, 0x4a, 0x18, 0x79, 0xa6, 0xe1, 0x18, 0x6d, 0x24, 0xe0,
			0x8d, 0x24, 0xe0, 0x60, 0xbd, 0xa8, 0xe0, 0x85, 0xfd, 0xbd, 0xab,
			0xe0, 0x85, 0xfe, 0xd0, 0x04, 0x60, 0x20, 0x98, 0xe8, 0xad, 0x00,
			0xe0, 0x3d, 0x62, 0xe1, 0xf0, 0xf4, 0xa0, 0x00, 0xb1, 0xfd, 0x85,
			0xff, 0xc8, 0xb1, 0xfd, 0xa8, 0xa5, 0xfd, 0x18, 0x69, 0x02, 0x85,
			0xfd, 0x9d, 0xa8, 0xe0, 0xa5, 0xfe, 0x69, 0x00, 0x85, 0xfe, 0x9d,
			0xab, 0xe0, 0xa5, 0xff, 0x29, 0x03, 0xd0, 0xd2, 0xbd, 0x8d, 0xe0,
			0x9d, 0x0e, 0xe0, 0xbd, 0x90, 0xe0, 0x9d, 0x11, 0xe0, 0xa5, 0xff,
			0x9d, 0x05, 0xe0, 0x98, 0x9d, 0x02, 0xe0, 0x29, 0x07, 0xa8, 0xb9,
			0x67, 0xe1, 0x8d, 0x6f, 0xe1, 0xbd, 0x02, 0xe0, 0x29, 0x38, 0x4a,
			0x4a, 0x4a, 0x7d, 0x81, 0xe0, 0x85, 0xfd, 0xbd, 0x02, 0xe0, 0x29,
			0xc0, 0x0a, 0x2a, 0x2a, 0xa8, 0xb9, 0x6f, 0xe1, 0x85, 0xfe, 0xbd,
			0x02, 0xe0, 0x29, 0x07, 0xf0, 0x62, 0xa8, 0xb9, 0x72, 0xe1, 0x65,
			0xfe, 0x18, 0x7d, 0x84, 0xe0, 0x10, 0x05, 0x18, 0x69, 0x0c, 0xe6,
			0xfd, 0xc9, 0x0c, 0x90, 0x04, 0xe9, 0x0c, 0xc6, 0xfd, 0x85, 0xfe,
			0xa8, 0xb9, 0x86, 0xe1, 0x85, 0xff, 0xb9, 0x7a, 0xe1, 0xa4, 0xfd,
			0x88, 0x30, 0x06, 0x46, 0xff, 0x6a, 0x88, 0x10, 0xfa, 0x18, 0x7d,
			0x87, 0xe0, 0x9d, 0x8d, 0xe0, 0xa5, 0xff, 0x7d, 0x8a, 0xe0, 0x9d,
			0x90, 0xe0, 0xbd, 0x05, 0xe0, 0xd0, 0x03, 0x4c, 0xa0, 0xe6, 0xbd,
			0x45, 0xe0, 0x1d, 0x48, 0xe0, 0xf0, 0x16, 0xbd, 0x0e, 0xe0, 0xdd,
			0x8d, 0xe0, 0xbd, 0x11, 0xe0, 0xfd, 0x90, 0xe0, 0xa9, 0xfe, 0x6a,
			0x9d, 0x42, 0xe0, 0x90, 0x11, 0xf0, 0x4a, 0x9d, 0x42, 0xe0, 0xbd,
			0x8d, 0xe0, 0x9d, 0x0e, 0xe0, 0xbd, 0x90, 0xe0, 0x9d, 0x11, 0xe0,
			0xbd, 0x36, 0xe0, 0x0a, 0xd0, 0x35, 0xbd, 0x93, 0xe0, 0xf0, 0x0c,
			0xbd, 0x99, 0xe0, 0x9d, 0x14, 0xe0, 0xbd, 0x9c, 0xe0, 0x9d, 0x17,
			0xe0, 0xbd, 0x9f, 0xe0, 0xf0, 0x0f, 0xa4, 0xfd, 0x18, 0x79, 0x92,
			0xe1, 0xa4, 0xfe, 0x18, 0x79, 0x9a, 0xe1, 0x18, 0x90, 0x08, 0xbd,
			0xa2, 0xe0, 0xf0, 0x0b, 0xbd, 0xa5, 0xe0, 0x8d, 0x24, 0xe0, 0xa9,
			0x00, 0x8d, 0x23, 0xe0, 0xbd, 0x3c, 0xe0, 0x9d, 0x3f, 0xe0, 0xbd,
			0x05, 0xe0, 0x29, 0x40, 0x9d, 0x36, 0xe0, 0xbd, 0x05, 0xe0, 0x4a,
			0x4a, 0x29, 0x07, 0xd0, 0x30, 0xbd, 0x05, 0xe0, 0x30, 0x14, 0xad,
			0x27, 0xe0, 0x29, 0x3c, 0xd0, 0x1e, 0xad, 0x27, 0xe0, 0x0a, 0x2a,
			0x2a, 0xd0, 0x02, 0xa9, 0x04, 0x4c, 0x70, 0xe8, 0xad, 0x28, 0xe0,
			0xf0, 0x0c, 0x29, 0x3f, 0xd0, 0x08, 0xad, 0x28, 0xe0, 0x0a, 0x2a,
			0x2a, 0xd0, 0x66, 0xa9, 0x10, 0x8d, 0x00, 0xe0, 0x60, 0xc9, 0x01,
			0xd0, 0x13, 0xbd, 0x05, 0xe0, 0x29, 0x20, 0xd0, 0x06, 0xad, 0x29,
			0xe0, 0x4c, 0x70, 0xe8, 0xbd, 0x2a, 0xe0, 0x4c, 0x70, 0xe8, 0xa8,
			0xbd, 0x05, 0xe0, 0x29, 0xa0, 0xc9, 0x80, 0xf0, 0x30, 0x85, 0xff,
			0x18, 0xad, 0x27, 0xe0, 0xd0, 0x01, 0x38, 0x88, 0x88, 0xf0, 0x06,
			0x6a, 0xb0, 0x4e, 0x88, 0xd0, 0xfa, 0xa4, 0xff, 0x85, 0xff, 0xf0,
			0x26, 0x46, 0xff, 0xb0, 0x41, 0xf0, 0x42, 0x65, 0xff, 0xb0, 0x3e,
			0xc8, 0x10, 0x19, 0x46, 0xff, 0xb0, 0x34, 0x65, 0xff, 0x90, 0x11,
			0xb0, 0x31, 0xad, 0x28, 0xe0, 0xf0, 0x29, 0x88, 0x88, 0xf0, 0x06,
			0x4a, 0xb0, 0x22, 0x88, 0xd0, 0xfa, 0x9d, 0x30, 0xe0, 0xbd, 0x1a,
			0xe0, 0x29, 0xf6, 0x9d, 0x1a, 0xe0, 0x38, 0xbd, 0x02, 0xe0, 0x29,
			0x07, 0xd0, 0x03, 0x7e, 0x36, 0xe0, 0xbd, 0x1a, 0xe0, 0x69, 0x00,
			0x9d, 0x1a, 0xe0, 0x60, 0xa9, 0x10, 0x2c, 0xa9, 0x18, 0x8d, 0x00,
			0xe0, 0x60, 0x98, 0x48, 0xa5, 0xff, 0x4a, 0x90, 0x03, 0x4c, 0x42,
			0xea, 0x4a, 0x4a, 0xb0, 0x1e, 0x4a, 0xb0, 0x0e, 0x9d, 0x9c, 0xe0,
			0x9d, 0x17, 0xe0, 0x68, 0x9d, 0x99, 0xe0, 0x9d, 0x14, 0xe0, 0x60,
			0x4a, 0x90, 0x02, 0x09, 0xf8, 0x9d, 0x8a, 0xe0, 0x68, 0x9d, 0x87,
			0xe0, 0x60, 0x4a, 0xb0, 0x03, 0x4c, 0x4a, 0xe9, 0x4a, 0xb0, 0x61,
			0x4a, 0xb0, 0x0f, 0xd0, 0x08, 0x68, 0x9d, 0xa5, 0xe0, 0x8d, 0x24,
			0xe0, 0x60, 0x68, 0x9d, 0x3c, 0xe0, 0x60, 0xd0, 0x48, 0x68, 0x9d,
			0x7e, 0xe0, 0xc9, 0x5b, 0xf0, 0x33, 0xa8, 0x4a, 0x4a, 0x4a, 0x38,
			0xe9, 0x0b, 0x18, 0x7d, 0x84, 0xe0, 0x30, 0x0c, 0xc9, 0x0c, 0x90,
			0x11, 0xe9, 0x0c, 0xde, 0x81, 0xe0, 0x4c, 0x0b, 0xe9, 0xc9, 0xf5,
			0xb0, 0x05, 0x69, 0x0c, 0xfe, 0x81, 0xe0, 0x9d, 0x84, 0xe0, 0x98,
			0x29, 0x07, 0x38, 0xe9, 0x03, 0x18, 0x7d, 0x81, 0xe0, 0x9d, 0x81,
			0xe0, 0x60, 0xbd, 0x78, 0xe0, 0x9d, 0x81, 0xe0, 0xbd, 0x7b, 0xe0,
			0x9d, 0x84, 0xe0, 0x60, 0x68, 0x9d, 0xc6, 0xe0, 0x60, 0x4a, 0xb0,
			0x08, 0x9d, 0x0b, 0xe0, 0x68, 0x9d, 0x08, 0xe0, 0x60, 0x4a, 0x6a,
			0x6a, 0x6d, 0x5b, 0xe1, 0x8d, 0x2d, 0xe0, 0x68, 0x6d, 0x5c, 0xe1,
			0x8d, 0x2e, 0xe0, 0x60, 0x4a, 0x90, 0x03, 0x4c, 0xd3, 0xe9, 0x4a,
			0xb0, 0x40, 0x4a, 0xb0, 0x17, 0x4a, 0xb0, 0x0f, 0x68, 0x8d, 0x27,
			0xe0, 0x4a, 0x4a, 0x4a, 0xa8, 0xb9, 0xaf, 0xe1, 0x8d, 0x28, 0xe0,
			0x60, 0x68, 0x9d, 0x5d, 0xe0, 0x60, 0x4a, 0xb0, 0x05, 0x68, 0x8d,
			0x01, 0xe0, 0x60, 0x68, 0xf0, 0x11, 0x9d, 0x75, 0xe0, 0xbc, 0x63,
			0xe0, 0xd0, 0x08, 0x9d, 0x63, 0xe0, 0xa9, 0x01, 0x9d, 0x66, 0xe0,
			0x60, 0x9d, 0x63, 0xe0, 0x9d, 0x69, 0xe0, 0x9d, 0x6c, 0xe0, 0x60,
			0x4a, 0xb0, 0x30, 0x4a, 0xb0, 0x05, 0x68, 0x9d, 0x39, 0xe0, 0x60,
			0x68, 0xa0, 0x00, 0x4a, 0x90, 0x02, 0xc8, 0x18, 0x48, 0x29, 0x07,
			0x79, 0xac, 0xe1, 0x9d, 0x78, 0xe0, 0x9d, 0x81, 0xe0, 0x68, 0x4a,
			0x4a, 0x4a, 0x18, 0x79, 0xad, 0xe1, 0x9d, 0x7b, 0xe0, 0x9d, 0x84,
			0xe0, 0xa9, 0x5b, 0x9d, 0x7e, 0xe0, 0x60, 0x4a, 0xb0, 0x05, 0x68,
			0x9d, 0xa2, 0xe0, 0x60, 0x68, 0x8d, 0xcc, 0xe0, 0x60, 0x4a, 0xb0,
			0x27, 0x4a, 0xb0, 0x0d, 0x4a, 0xb0, 0x05, 0x68, 0x8d, 0x29, 0xe0,
			0x60, 0x68, 0x9d, 0x9f, 0xe0, 0x60, 0x4a, 0xb0, 0x0f, 0x68, 0x9d,
			0x93, 0xe0, 0xa0, 0x00, 0x0a, 0x90, 0x01, 0x88, 0x98, 0x9d, 0x96,
			0xe0, 0x60, 0x68, 0x9d, 0x72, 0xe0, 0x60, 0x4a, 0xb0, 0x1c, 0x4a,
			0xb0, 0x15, 0x68, 0x9d, 0xb7, 0xe0, 0xa5, 0xfd, 0x9d, 0xb1, 0xe0,
			0xa5, 0xfe, 0x9d, 0xb4, 0xe0, 0xbd, 0x33, 0xe0, 0x9d, 0xae, 0xe0,
			0x60, 0x68, 0x6c, 0x5f, 0xe1, 0x4a, 0xb0, 0x1e, 0x68, 0xd0, 0x0a,
			0x9d, 0x4b, 0xe0, 0x9d, 0x51, 0xe0, 0x9d, 0x54, 0xe0, 0x60, 0x9d,
			0x5a, 0xe0, 0xbc, 0x4b, 0xe0, 0xd0, 0x08, 0x9d, 0x4b, 0xe0, 0xa9,
			0x01, 0x9d, 0x4e, 0xe0, 0x60, 0x68, 0x9d, 0x2a, 0xe0, 0x60, 0x4a,
			0x90, 0x08, 0x9d, 0x48, 0xe0, 0x68, 0x9d, 0x45, 0xe0, 0x60, 0x68,
			0x4a, 0xb0, 0x61, 0x4a, 0xb0, 0x25, 0x4a, 0xb0, 0x05, 0x4a, 0xa0,
			0xf0, 0xd0, 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0xa0, 0x0f, 0x85, 0xff,
			0x98, 0xb0, 0x09, 0x3d, 0x1d, 0xe0, 0x05, 0xff, 0x9d, 0x1d, 0xe0,
			0x60, 0x3d, 0x20, 0xe0, 0x05, 0xff, 0x9d, 0x20, 0xe0, 0x60, 0x4a,
			0xb0, 0x38, 0x4a, 0xb0, 0x64, 0x85, 0xff, 0xbd, 0xba, 0xe0, 0xdd,
			0xa9, 0xe1, 0xf0, 0x54, 0xfe, 0xba, 0xe0, 0xa8, 0xa5, 0xfd, 0x99,
			0xe1, 0xe0, 0xa5, 0xfe, 0x99, 0xf0, 0xe0, 0xbd, 0x33, 0xe0, 0x99,
			0x2f, 0xe1, 0xa4, 0xff, 0xb9, 0x17, 0xe1, 0xf0, 0x36, 0x85, 0xfe,
			0xb9, 0xff, 0xe0, 0x85, 0xfd, 0xb9, 0x3e, 0xe1, 0x9d, 0x33, 0xe0,
			0x60, 0xb0, 0x4b, 0x4a, 0xb0, 0x3c, 0xa8, 0xa5, 0xfd, 0x99, 0xff,
			0xe0, 0xa5, 0xfe, 0x99, 0x17, 0xe1, 0xbd, 0x33, 0xe0, 0x99, 0x3e,
			0xe1, 0xbd, 0xba, 0xe0, 0xdd, 0xa9, 0xe1, 0xf0, 0x0d, 0xfe, 0xba,
			0xe0, 0xa8, 0xa9, 0x00, 0x99, 0xf0, 0xe0, 0x60, 0xa9, 0x30, 0x2c,
			0xa9, 0x28, 0x8d, 0x00, 0xe0, 0x60, 0x0a, 0x0a, 0x0a, 0x0a, 0x4d,
			0x25, 0xe0, 0x29, 0xf0, 0x4d, 0x25, 0xe0, 0x8d, 0x25, 0xe0, 0x60,
			0x4d, 0x26, 0xe0, 0x29, 0x0f, 0x4d, 0x26, 0xe0, 0x8d, 0x26, 0xe0,
			0x60, 0x4a, 0xb0, 0x0b, 0x4a, 0xb0, 0x04, 0x8d, 0xca, 0xe0, 0x60,
			0x8d, 0xcb, 0xe0, 0x60, 0x4a, 0x90, 0x03, 0x4c, 0xa5, 0xeb, 0x4a,
			0xa8, 0xf0, 0x21, 0x88, 0xf0, 0x34, 0x88, 0xf0, 0x42, 0x88, 0xf0,
			0x4a, 0x88, 0xf0, 0x52, 0x88, 0xf0, 0x5c, 0x88, 0xf0, 0x66, 0x88,
			0xf0, 0x73, 0x29, 0x07, 0x09, 0x10, 0xb0, 0x03, 0x4c, 0xb7, 0xea,
			0x4c, 0x7f, 0xea, 0xac, 0x26, 0xe0, 0xb0, 0x07, 0xc8, 0x98, 0x29,
			0x0f, 0xd0, 0x07, 0x60, 0x98, 0x29, 0x0f, 0xf0, 0x04, 0x88, 0x8c,
			0x26, 0xe0, 0x60, 0xbd, 0x62, 0xe1, 0x49, 0xff, 0x2d, 0x25, 0xe0,
			0x90, 0x03, 0x1d, 0x62, 0xe1, 0x8d, 0x25, 0xe0, 0x60, 0xbd, 0x1a,
			0xe0, 0x29, 0xfb, 0x90, 0x55, 0x09, 0x04, 0xb0, 0x51, 0xbd, 0x1a,
			0xe0, 0x29, 0xfd, 0x90, 0x4a, 0x09, 0x02, 0xb0, 0x46, 0xad, 0x25,
			0xe0, 0x29, 0xf7, 0x90, 0x02, 0x09, 0x08, 0x8d, 0x25, 0xe0, 0x60,
			0xad, 0x26, 0xe0, 0x29, 0x7f, 0x90, 0x02, 0x09, 0x80, 0x8d, 0x26,
			0xe0, 0x60, 0x98, 0x8d, 0xbd, 0xe0, 0x8d, 0xdf, 0xe0, 0xc8, 0x8c,
			0xe0, 0xe0, 0x2a, 0x8d, 0xc9, 0xe0, 0x60, 0x98, 0x2a, 0x9d, 0x60,
			0xe0, 0x60, 0x4a, 0xb0, 0x27, 0x4a, 0xb0, 0x14, 0xd0, 0x02, 0xa9,
			0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x5d, 0x1a, 0xe0, 0x29, 0xf0, 0x5d,
			0x1a, 0xe0, 0x9d, 0x1a, 0xe0, 0x60, 0x0a, 0x0a, 0x0a, 0x0a, 0x4d,
			0x26, 0xe0, 0x29, 0x70, 0x4d, 0x26, 0xe0, 0x8d, 0x26, 0xe0, 0x60,
			0x4a, 0x90, 0x04, 0x9d, 0xc0, 0xe0, 0x60, 0xa8, 0xf0, 0x20, 0x88,
			0xf0, 0x40, 0x88, 0xf0, 0x63, 0x29, 0x03, 0x9d, 0xc3, 0xe0, 0xa9,
			0x00, 0x9d, 0xcd, 0xe0, 0x9d, 0xd0, 0xe0, 0x9d, 0xd3, 0xe0, 0x9d,
			0xd6, 0xe0, 0x8d, 0xd9, 0xe0, 0x8d, 0xdc, 0xe0, 0x60, 0xbd, 0xb7,
			0xe0, 0xf0, 0x05, 0xde, 0xb7, 0xe0, 0xf0, 0x12, 0xbd, 0x33, 0xe0,
			0xdd, 0xae, 0xe0, 0xd0, 0x0b, 0xbd, 0xb1, 0xe0, 0x85, 0xfd, 0xbd,
			0xb4, 0xe0, 0x85, 0xfe, 0x60, 0xa9, 0x38, 0x8d, 0x00, 0xe0, 0x60,
			0xbd, 0xba, 0xe0, 0xdd, 0xa8, 0xe1, 0xf0, 0x18, 0xde, 0xba, 0xe0,
			0xa8, 0x88, 0xb9, 0xf0, 0xe0, 0xf0, 0x0d, 0x85, 0xfe, 0xb9, 0xe1,
			0xe0, 0x85, 0xfd, 0xb9, 0x2f, 0xe1, 0x9d, 0x33, 0xe0, 0x60, 0xa9,
			0x20, 0x8d, 0x00, 0xe0, 0x60, 0xad, 0x00, 0xe0, 0x5d, 0x62, 0xe1,
			0x8d, 0x00, 0xe0, 0xa9, 0x01, 0x9d, 0x30, 0xe0, 0x60, 0xad, 0x00,
			0xe0, 0x29, 0x07, 0x8d, 0x81, 0xec, 0xd0, 0x03, 0x20, 0xe9, 0xe2,
			0x60, 0x00, 0xa2, 0x51, 0xa0, 0xec, 0x8e, 0x5d, 0xe1, 0x8c, 0x5e,
			0xe1, 0x20, 0xcf, 0xe1, 0xa2, 0x00, 0xa0, 0x09, 0x20, 0x00, 0xe2,
			0xa9, 0x07, 0x8d, 0x00, 0xe0, 0x8d, 0x81, 0xec, 0x60, 0x00, 0x00,
			0x00, 0xa9, 0x00, 0x29, 0xff, 0xf0, 0xf6, 0x4c, 0x29, 0xe3, 0xa9,
			0x07, 0x8d, 0x00, 0xe0, 0x60 };

	private static final short /* uint8_t */_sidtune_sidplayer2[] = {
			0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
			0x00, 0x61, 0xf1, 0x60, 0x01, 0x02, 0x04, 0x00, 0x07, 0x0e, 0x02,
			0x02, 0xfe, 0x02, 0x02, 0xfe, 0xfe, 0x00, 0x01, 0x00, 0xff, 0x00,
			0x02, 0x04, 0x05, 0x07, 0x09, 0x0b, 0x1e, 0x18, 0x8b, 0x7e, 0xfa,
			0x06, 0xac, 0xf3, 0xe6, 0x8f, 0xf8, 0x2e, 0x86, 0x8e, 0x96, 0x9f,
			0xa8, 0xb3, 0xbd, 0xc8, 0xd4, 0xe1, 0xee, 0xfd, 0x8c, 0x78, 0x64,
			0x50, 0x3c, 0x28, 0x14, 0x00, 0x00, 0x02, 0x03, 0x05, 0x07, 0x08,
			0x0a, 0x0c, 0x0d, 0x0f, 0x11, 0x12, 0x00, 0xe0, 0x00, 0x05, 0x0a,
			0x0f, 0xf9, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
			0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x00, 0x50, 0x00, 0x00,
			0x60, 0x00, 0x00, 0x70, 0x00, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00,
			0x00, 0xa0, 0x00, 0xa9, 0x00, 0x8d, 0x00, 0xf0, 0xa2, 0x95, 0xa0,
			0x42, 0xad, 0xa6, 0x02, 0xf0, 0x04, 0xa2, 0x25, 0xa0, 0x40, 0x8e,
			0x5b, 0xf1, 0x8c, 0x5c, 0xf1, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
			0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
			0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x60, 0xa9, 0x00, 0x8d,
			0x00, 0xf0, 0x86, 0x61, 0x84, 0x62, 0xa0, 0xbc, 0x99, 0x00, 0xf0,
			0x88, 0xd0, 0xfa, 0xa0, 0x72, 0x99, 0xbc, 0xf0, 0x88, 0xd0, 0xfa,
			0x8d, 0x15, 0xd5, 0x8d, 0x16, 0xd5, 0xa9, 0x08, 0x8d, 0x25, 0xf0,
			0x8d, 0x17, 0xd5, 0x8d, 0x26, 0xf0, 0x8d, 0x18, 0xd5, 0xa9, 0x90,
			0x8d, 0x27, 0xf0, 0xa9, 0x60, 0x8d, 0x28, 0xf0, 0xa9, 0x0c, 0x8d,
			0x29, 0xf0, 0xad, 0x5b, 0xf1, 0x8d, 0x2d, 0xf0, 0xad, 0x5c, 0xf1,
			0x8d, 0x2e, 0xf0, 0xa9, 0xff, 0x8d, 0xcc, 0xf0, 0xa9, 0xd5, 0x85,
			0x64, 0xa2, 0x02, 0xa9, 0xff, 0x9d, 0x0b, 0xf0, 0xa9, 0x01, 0x9d,
			0x30, 0xf0, 0x9d, 0x2a, 0xf0, 0x8a, 0x9d, 0x33, 0xf0, 0x9d, 0xae,
			0xf0, 0xa9, 0x04, 0x9d, 0x39, 0xf0, 0xbd, 0xa8, 0xf1, 0x9d, 0xba,
			0xf0, 0xa9, 0x5b, 0x9d, 0x7e, 0xf0, 0xbd, 0x65, 0xf1, 0x85, 0x63,
			0xa9, 0x00, 0xa8, 0x91, 0x63, 0xc8, 0x91, 0x63, 0xc8, 0x91, 0x63,
			0xa9, 0x08, 0x9d, 0x17, 0xf0, 0x9d, 0x9c, 0xf0, 0xc8, 0x91, 0x63,
			0xc8, 0x91, 0x63, 0xa9, 0x40, 0x9d, 0x1a, 0xf0, 0x91, 0x63, 0xa9,
			0x20, 0x9d, 0x1d, 0xf0, 0xc8, 0x91, 0x63, 0xa9, 0xf5, 0x9d, 0x20,
			0xf0, 0xc8, 0x91, 0x63, 0xca, 0x10, 0xa4, 0x8a, 0xa2, 0x17, 0x9d,
			0x3e, 0xf1, 0xca, 0x10, 0xfa, 0xa5, 0x61, 0x18, 0x69, 0x06, 0x85,
			0x63, 0xa9, 0x00, 0xaa, 0xa8, 0x65, 0x62, 0x85, 0x64, 0x9d, 0xab,
			0xf0, 0x9d, 0xb4, 0xf0, 0xa5, 0x63, 0x9d, 0xa8, 0xf0, 0x9d, 0xb1,
			0xf0, 0x18, 0x71, 0x61, 0x85, 0x63, 0xa5, 0x64, 0xc8, 0x71, 0x61,
			0xc8, 0xe8, 0xe0, 0x03, 0xd0, 0xe0, 0xa6, 0x63, 0xa8, 0x60, 0xa9,
			0x00, 0x8d, 0x04, 0xd5, 0x8d, 0x0b, 0xd5, 0x8d, 0x12, 0xd5, 0x8d,
			0x01, 0xd5, 0x8d, 0x08, 0xd5, 0x8d, 0x0f, 0xd5, 0xa9, 0x08, 0x8d,
			0x17, 0xd5, 0xad, 0x5b, 0xf1, 0x8d, 0x04, 0xdc, 0xad, 0x5c, 0xf1,
			0x8d, 0x05, 0xdc, 0x60, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea,
			0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x60, 0xa9, 0x08, 0x8d,
			0x00, 0xf0, 0x6c, 0x5d, 0xf1, 0xea, 0xea, 0xea, 0xad, 0x00, 0xf0,
			0x30, 0xf0, 0x09, 0x80, 0xa8, 0x29, 0x07, 0xf0, 0xee, 0xd8, 0x8c,
			0x00, 0xf0, 0xea, 0xa5, 0xfb, 0x8d, 0x56, 0xf1, 0xa5, 0xfc, 0x8d,
			0x57, 0xf1, 0xa5, 0xfd, 0x8d, 0x58, 0xf1, 0xa5, 0xfe, 0x8d, 0x59,
			0xf1, 0xa5, 0xff, 0x8d, 0x5a, 0xf1, 0xad, 0x23, 0xf0, 0x18, 0x6d,
			0xd9, 0xf0, 0x48, 0x29, 0x07, 0xa8, 0xad, 0xdc, 0xf0, 0x69, 0x00,
			0x85, 0xff, 0x68, 0x46, 0xff, 0x6a, 0x46, 0xff, 0x6a, 0x46, 0xff,
			0x6a, 0x18, 0x6d, 0x24, 0xf0, 0x8c, 0x15, 0xd5, 0x8d, 0x16, 0xd5,
			0xad, 0x25, 0xf0, 0x8d, 0x17, 0xd5, 0xad, 0x26, 0xf0, 0x8d, 0x18,
			0xd5, 0xa9, 0xd5, 0x85, 0xfc, 0xa2, 0x00, 0xad, 0x00, 0xf0, 0x3d,
			0x62, 0xf1, 0xf0, 0x51, 0xbd, 0x65, 0xf1, 0x85, 0xfb, 0xbd, 0x0e,
			0xf0, 0x18, 0x7d, 0x51, 0xf0, 0xa8, 0xbd, 0x11, 0xf0, 0x7d, 0x54,
			0xf0, 0x48, 0x98, 0x18, 0x7d, 0xcd, 0xf0, 0xa0, 0x00, 0x91, 0xfb,
			0x68, 0x7d, 0xd0, 0xf0, 0xc8, 0x91, 0xfb, 0xbd, 0x14, 0xf0, 0x18,
			0x7d, 0x69, 0xf0, 0x85, 0xff, 0xbd, 0x17, 0xf0, 0x7d, 0x6c, 0xf0,
			0x48, 0xa5, 0xff, 0x18, 0x7d, 0xd3, 0xf0, 0xc8, 0x91, 0xfb, 0x68,
			0x7d, 0xd6, 0xf0, 0xc8, 0x91, 0xfb, 0xbd, 0x1d, 0xf0, 0xc8, 0xc8,
			0x91, 0xfb, 0xbd, 0x20, 0xf0, 0xc8, 0x91, 0xfb, 0xe8, 0xe0, 0x03,
			0xd0, 0xa2, 0xac, 0x1a, 0xf0, 0xae, 0x1b, 0xf0, 0xad, 0x1c, 0xf0,
			0x8c, 0x04, 0xd5, 0x8e, 0x0b, 0xd5, 0x8d, 0x12, 0xd5, 0xae, 0x2d,
			0xf0, 0xac, 0x2e, 0xf0, 0x8e, 0x04, 0xdc, 0x8c, 0x05, 0xdc, 0xad,
			0x1b, 0xd5, 0x8d, 0xbe, 0xf0, 0xad, 0x1c, 0xd5, 0x8d, 0xbf, 0xf0,
			0xa2, 0x00, 0xad, 0x00, 0xf0, 0x3d, 0x62, 0xf1, 0xf0, 0x10, 0x8e,
			0x2f, 0xf0, 0x20, 0x36, 0xf5, 0xad, 0x00, 0xf0, 0x29, 0x78, 0xf0,
			0x03, 0x4c, 0x0c, 0xf5, 0xe8, 0xe0, 0x03, 0xd0, 0xe3, 0xad, 0xc9,
			0xf0, 0xd0, 0x52, 0xad, 0xca, 0xf0, 0x0d, 0xcb, 0xf0, 0xf0, 0x78,
			0xad, 0xdf, 0xf0, 0xd0, 0x28, 0xad, 0xca, 0xf0, 0xf0, 0x28, 0x18,
			0x6d, 0xbd, 0xf0, 0xb0, 0x07, 0xcd, 0xcc, 0xf0, 0x90, 0x60, 0xf0,
			0x5e, 0xa9, 0x00, 0x8d, 0xdf, 0xf0, 0xad, 0xcb, 0xf0, 0xf0, 0x54,
			0xee, 0xdf, 0xf0, 0xad, 0xbd, 0xf0, 0xed, 0xcb, 0xf0, 0x4c, 0xb4,
			0xf4, 0xad, 0xcb, 0xf0, 0xf0, 0xd3, 0xad, 0xbd, 0xf0, 0x38, 0xed,
			0xcb, 0xf0, 0xb0, 0x3a, 0xa9, 0x00, 0x8d, 0xdf, 0xf0, 0xad, 0xca,
			0xf0, 0xd0, 0x30, 0xee, 0xdf, 0xf0, 0xd0, 0x28, 0xce, 0xe0, 0xf0,
			0xd0, 0x29, 0xad, 0xdf, 0xf0, 0xd0, 0x11, 0xee, 0xdf, 0xf0, 0xad,
			0xcb, 0xf0, 0xd0, 0x02, 0xa9, 0x20, 0x8d, 0xe0, 0xf0, 0xa9, 0x00,
			0xf0, 0x10, 0xce, 0xdf, 0xf0, 0xad, 0xca, 0xf0, 0xd0, 0x02, 0xa9,
			0x20, 0x8d, 0xe0, 0xf0, 0xad, 0xcc, 0xf0, 0x8d, 0xbd, 0xf0, 0xa2,
			0x00, 0xbd, 0xc3, 0xf0, 0xf0, 0x44, 0xa9, 0x00, 0x85, 0xff, 0xbc,
			0xc0, 0xf0, 0xb9, 0xbd, 0xf0, 0xbc, 0xc6, 0xf0, 0xf0, 0x0e, 0x30,
			0x08, 0x0a, 0x26, 0xff, 0x88, 0xd0, 0xfa, 0xf0, 0x04, 0x4a, 0xc8,
			0xd0, 0xfc, 0xbc, 0xc3, 0xf0, 0x88, 0xd0, 0x0b, 0x9d, 0xcd, 0xf0,
			0xa5, 0xff, 0x9d, 0xd0, 0xf0, 0x4c, 0x02, 0xf5, 0x88, 0xd0, 0x0b,
			0x9d, 0xd3, 0xf0, 0xa5, 0xff, 0x9d, 0xd6, 0xf0, 0x4c, 0x02, 0xf5,
			0x8d, 0xd9, 0xf0, 0xa5, 0xff, 0x8d, 0xdc, 0xf0, 0xe8, 0xe0, 0x03,
			0xd0, 0xb2, 0xad, 0x00, 0xf0, 0x29, 0x7f, 0x8d, 0x00, 0xf0, 0xad,
			0x56, 0xf1, 0x85, 0xfb, 0xad, 0x57, 0xf1, 0x85, 0xfc, 0xad, 0x58,
			0xf1, 0x85, 0xfd, 0xad, 0x59, 0xf1, 0x85, 0xfe, 0xad, 0x5a, 0xf1,
			0x85, 0xff, 0x6c, 0x5d, 0xf1, 0xbd, 0x60, 0xf0, 0xd0, 0x03, 0x4c,
			0x9f, 0xf6, 0x4c, 0xba, 0xf5, 0xde, 0x30, 0xf0, 0xd0, 0x03, 0x4c,
			0xa0, 0xf6, 0xbd, 0x36, 0xf0, 0x30, 0xe8, 0xd0, 0x1a, 0xbd, 0x3f,
			0xf0, 0xf0, 0x05, 0xde, 0x3f, 0xf0, 0xd0, 0x10, 0xbd, 0x39, 0xf0,
			0xdd, 0x30, 0xf0, 0x90, 0x08, 0xbd, 0x1a, 0xf0, 0x29, 0xfe, 0x9d,
			0x1a, 0xf0, 0xbd, 0x42, 0xf0, 0xf0, 0x56, 0x0a, 0xbd, 0x0e, 0xf0,
			0xb0, 0x1d, 0x7d, 0x45, 0xf0, 0x9d, 0x0e, 0xf0, 0xa8, 0xbd, 0x11,
			0xf0, 0x7d, 0x48, 0xf0, 0x9d, 0x11, 0xf0, 0x48, 0x98, 0xdd, 0x8d,
			0xf0, 0x68, 0xfd, 0x90, 0xf0, 0xb0, 0x1f, 0x90, 0x2e, 0xfd, 0x45,
			0xf0, 0x9d, 0x0e, 0xf0, 0xbd, 0x11, 0xf0, 0xfd, 0x48, 0xf0, 0x9d,
			0x11, 0xf0, 0xbd, 0x8d, 0xf0, 0xdd, 0x0e, 0xf0, 0xbd, 0x90, 0xf0,
			0xfd, 0x11, 0xf0, 0x90, 0x11, 0xbd, 0x8d, 0xf0, 0x9d, 0x0e, 0xf0,
			0xbd, 0x90, 0xf0, 0x9d, 0x11, 0xf0, 0xa9, 0x00, 0x9d, 0x42, 0xf0,
			0xbd, 0x60, 0xf0, 0xf0, 0x55, 0xbd, 0x4b, 0xf0, 0xf0, 0x4b, 0xa0,
			0x00, 0xde, 0x4e, 0xf0, 0xd0, 0x31, 0xbd, 0x51, 0xf0, 0x1d, 0x54,
			0xf0, 0xd0, 0x1b, 0xbd, 0x5d, 0xf0, 0x9d, 0x57, 0xf0, 0x9d, 0x4e,
			0xf0, 0xbd, 0x4b, 0xf0, 0x0a, 0xbd, 0x5a, 0xf0, 0x90, 0x04, 0x49,
			0xff, 0x69, 0x00, 0x9d, 0x4b, 0xf0, 0xd0, 0x10, 0xbd, 0x57, 0xf0,
			0x9d, 0x4e, 0xf0, 0x98, 0x38, 0xfd, 0x4b, 0xf0, 0x9d, 0x4b, 0xf0,
			0xc9, 0x00, 0x10, 0x01, 0x88, 0x18, 0x7d, 0x51, 0xf0, 0x9d, 0x51,
			0xf0, 0x98, 0x7d, 0x54, 0xf0, 0x9d, 0x54, 0xf0, 0xbd, 0x36, 0xf0,
			0x30, 0x15, 0xbd, 0x93, 0xf0, 0xf0, 0x10, 0x18, 0x7d, 0x14, 0xf0,
			0x9d, 0x14, 0xf0, 0xbd, 0x96, 0xf0, 0x7d, 0x17, 0xf0, 0x9d, 0x17,
			0xf0, 0xbd, 0x63, 0xf0, 0xf0, 0x4b, 0xa0, 0x00, 0xde, 0x66, 0xf0,
			0xd0, 0x31, 0xbd, 0x69, 0xf0, 0x1d, 0x6c, 0xf0, 0xd0, 0x1b, 0xbd,
			0x72, 0xf0, 0x9d, 0x6f, 0xf0, 0x9d, 0x66, 0xf0, 0xbd, 0x63, 0xf0,
			0x0a, 0xbd, 0x75, 0xf0, 0x90, 0x04, 0x49, 0xff, 0x69, 0x00, 0x9d,
			0x63, 0xf0, 0xd0, 0x10, 0xbd, 0x6f, 0xf0, 0x9d, 0x66, 0xf0, 0x98,
			0x38, 0xfd, 0x63, 0xf0, 0x9d, 0x63, 0xf0, 0xc9, 0x00, 0x10, 0x01,
			0x88, 0x18, 0x7d, 0x69, 0xf0, 0x9d, 0x69, 0xf0, 0x98, 0x7d, 0x6c,
			0xf0, 0x9d, 0x6c, 0xf0, 0xbd, 0x36, 0xf0, 0x10, 0x03, 0x4c, 0x9f,
			0xf6, 0xa0, 0x00, 0xbd, 0xa2, 0xf0, 0xf0, 0x1c, 0x10, 0x01, 0xc8,
			0x18, 0x6d, 0x23, 0xf0, 0x48, 0x29, 0x07, 0x8d, 0x23, 0xf0, 0x68,
			0x6a, 0x4a, 0x4a, 0x18, 0x79, 0xa6, 0xf1, 0x18, 0x6d, 0x24, 0xf0,
			0x8d, 0x24, 0xf0, 0x60, 0xbd, 0xa8, 0xf0, 0x85, 0xfd, 0xbd, 0xab,
			0xf0, 0x85, 0xfe, 0xd0, 0x04, 0x60, 0x20, 0x98, 0xf8, 0xad, 0x00,
			0xf0, 0x3d, 0x62, 0xf1, 0xf0, 0xf4, 0xa0, 0x00, 0xb1, 0xfd, 0x85,
			0xff, 0xc8, 0xb1, 0xfd, 0xa8, 0xa5, 0xfd, 0x18, 0x69, 0x02, 0x85,
			0xfd, 0x9d, 0xa8, 0xf0, 0xa5, 0xfe, 0x69, 0x00, 0x85, 0xfe, 0x9d,
			0xab, 0xf0, 0xa5, 0xff, 0x29, 0x03, 0xd0, 0xd2, 0xbd, 0x8d, 0xf0,
			0x9d, 0x0e, 0xf0, 0xbd, 0x90, 0xf0, 0x9d, 0x11, 0xf0, 0xa5, 0xff,
			0x9d, 0x05, 0xf0, 0x98, 0x9d, 0x02, 0xf0, 0x29, 0x07, 0xa8, 0xb9,
			0x67, 0xf1, 0x8d, 0x6f, 0xf1, 0xbd, 0x02, 0xf0, 0x29, 0x38, 0x4a,
			0x4a, 0x4a, 0x7d, 0x81, 0xf0, 0x85, 0xfd, 0xbd, 0x02, 0xf0, 0x29,
			0xc0, 0x0a, 0x2a, 0x2a, 0xa8, 0xb9, 0x6f, 0xf1, 0x85, 0xfe, 0xbd,
			0x02, 0xf0, 0x29, 0x07, 0xf0, 0x62, 0xa8, 0xb9, 0x72, 0xf1, 0x65,
			0xfe, 0x18, 0x7d, 0x84, 0xf0, 0x10, 0x05, 0x18, 0x69, 0x0c, 0xe6,
			0xfd, 0xc9, 0x0c, 0x90, 0x04, 0xe9, 0x0c, 0xc6, 0xfd, 0x85, 0xfe,
			0xa8, 0xb9, 0x86, 0xf1, 0x85, 0xff, 0xb9, 0x7a, 0xf1, 0xa4, 0xfd,
			0x88, 0x30, 0x06, 0x46, 0xff, 0x6a, 0x88, 0x10, 0xfa, 0x18, 0x7d,
			0x87, 0xf0, 0x9d, 0x8d, 0xf0, 0xa5, 0xff, 0x7d, 0x8a, 0xf0, 0x9d,
			0x90, 0xf0, 0xbd, 0x05, 0xf0, 0xd0, 0x03, 0x4c, 0xa0, 0xf6, 0xbd,
			0x45, 0xf0, 0x1d, 0x48, 0xf0, 0xf0, 0x16, 0xbd, 0x0e, 0xf0, 0xdd,
			0x8d, 0xf0, 0xbd, 0x11, 0xf0, 0xfd, 0x90, 0xf0, 0xa9, 0xfe, 0x6a,
			0x9d, 0x42, 0xf0, 0x90, 0x11, 0xf0, 0x4a, 0x9d, 0x42, 0xf0, 0xbd,
			0x8d, 0xf0, 0x9d, 0x0e, 0xf0, 0xbd, 0x90, 0xf0, 0x9d, 0x11, 0xf0,
			0xbd, 0x36, 0xf0, 0x0a, 0xd0, 0x35, 0xbd, 0x93, 0xf0, 0xf0, 0x0c,
			0xbd, 0x99, 0xf0, 0x9d, 0x14, 0xf0, 0xbd, 0x9c, 0xf0, 0x9d, 0x17,
			0xf0, 0xbd, 0x9f, 0xf0, 0xf0, 0x0f, 0xa4, 0xfd, 0x18, 0x79, 0x92,
			0xf1, 0xa4, 0xfe, 0x18, 0x79, 0x9a, 0xf1, 0x18, 0x90, 0x08, 0xbd,
			0xa2, 0xf0, 0xf0, 0x0b, 0xbd, 0xa5, 0xf0, 0x8d, 0x24, 0xf0, 0xa9,
			0x00, 0x8d, 0x23, 0xf0, 0xbd, 0x3c, 0xf0, 0x9d, 0x3f, 0xf0, 0xbd,
			0x05, 0xf0, 0x29, 0x40, 0x9d, 0x36, 0xf0, 0xbd, 0x05, 0xf0, 0x4a,
			0x4a, 0x29, 0x07, 0xd0, 0x30, 0xbd, 0x05, 0xf0, 0x30, 0x14, 0xad,
			0x27, 0xf0, 0x29, 0x3c, 0xd0, 0x1e, 0xad, 0x27, 0xf0, 0x0a, 0x2a,
			0x2a, 0xd0, 0x02, 0xa9, 0x04, 0x4c, 0x70, 0xf8, 0xad, 0x28, 0xf0,
			0xf0, 0x0c, 0x29, 0x3f, 0xd0, 0x08, 0xad, 0x28, 0xf0, 0x0a, 0x2a,
			0x2a, 0xd0, 0x66, 0xa9, 0x10, 0x8d, 0x00, 0xf0, 0x60, 0xc9, 0x01,
			0xd0, 0x13, 0xbd, 0x05, 0xf0, 0x29, 0x20, 0xd0, 0x06, 0xad, 0x29,
			0xf0, 0x4c, 0x70, 0xf8, 0xbd, 0x2a, 0xf0, 0x4c, 0x70, 0xf8, 0xa8,
			0xbd, 0x05, 0xf0, 0x29, 0xa0, 0xc9, 0x80, 0xf0, 0x30, 0x85, 0xff,
			0x18, 0xad, 0x27, 0xf0, 0xd0, 0x01, 0x38, 0x88, 0x88, 0xf0, 0x06,
			0x6a, 0xb0, 0x4e, 0x88, 0xd0, 0xfa, 0xa4, 0xff, 0x85, 0xff, 0xf0,
			0x26, 0x46, 0xff, 0xb0, 0x41, 0xf0, 0x42, 0x65, 0xff, 0xb0, 0x3e,
			0xc8, 0x10, 0x19, 0x46, 0xff, 0xb0, 0x34, 0x65, 0xff, 0x90, 0x11,
			0xb0, 0x31, 0xad, 0x28, 0xf0, 0xf0, 0x29, 0x88, 0x88, 0xf0, 0x06,
			0x4a, 0xb0, 0x22, 0x88, 0xd0, 0xfa, 0x9d, 0x30, 0xf0, 0xbd, 0x1a,
			0xf0, 0x29, 0xf6, 0x9d, 0x1a, 0xf0, 0x38, 0xbd, 0x02, 0xf0, 0x29,
			0x07, 0xd0, 0x03, 0x7e, 0x36, 0xf0, 0xbd, 0x1a, 0xf0, 0x69, 0x00,
			0x9d, 0x1a, 0xf0, 0x60, 0xa9, 0x10, 0x2c, 0xa9, 0x18, 0x8d, 0x00,
			0xf0, 0x60, 0x98, 0x48, 0xa5, 0xff, 0x4a, 0x90, 0x03, 0x4c, 0x42,
			0xfa, 0x4a, 0x4a, 0xb0, 0x1e, 0x4a, 0xb0, 0x0e, 0x9d, 0x9c, 0xf0,
			0x9d, 0x17, 0xf0, 0x68, 0x9d, 0x99, 0xf0, 0x9d, 0x14, 0xf0, 0x60,
			0x4a, 0x90, 0x02, 0x09, 0xf8, 0x9d, 0x8a, 0xf0, 0x68, 0x9d, 0x87,
			0xf0, 0x60, 0x4a, 0xb0, 0x03, 0x4c, 0x4a, 0xf9, 0x4a, 0xb0, 0x61,
			0x4a, 0xb0, 0x0f, 0xd0, 0x08, 0x68, 0x9d, 0xa5, 0xf0, 0x8d, 0x24,
			0xf0, 0x60, 0x68, 0x9d, 0x3c, 0xf0, 0x60, 0xd0, 0x48, 0x68, 0x9d,
			0x7e, 0xf0, 0xc9, 0x5b, 0xf0, 0x33, 0xa8, 0x4a, 0x4a, 0x4a, 0x38,
			0xe9, 0x0b, 0x18, 0x7d, 0x84, 0xf0, 0x30, 0x0c, 0xc9, 0x0c, 0x90,
			0x11, 0xe9, 0x0c, 0xde, 0x81, 0xf0, 0x4c, 0x0b, 0xf9, 0xc9, 0xf5,
			0xb0, 0x05, 0x69, 0x0c, 0xfe, 0x81, 0xf0, 0x9d, 0x84, 0xf0, 0x98,
			0x29, 0x07, 0x38, 0xe9, 0x03, 0x18, 0x7d, 0x81, 0xf0, 0x9d, 0x81,
			0xf0, 0x60, 0xbd, 0x78, 0xf0, 0x9d, 0x81, 0xf0, 0xbd, 0x7b, 0xf0,
			0x9d, 0x84, 0xf0, 0x60, 0x68, 0x9d, 0xc6, 0xf0, 0x60, 0x4a, 0xb0,
			0x08, 0x9d, 0x0b, 0xf0, 0x68, 0x9d, 0x08, 0xf0, 0x60, 0x4a, 0x6a,
			0x6a, 0x6d, 0x5b, 0xf1, 0x8d, 0x2d, 0xf0, 0x68, 0x6d, 0x5c, 0xf1,
			0x8d, 0x2e, 0xf0, 0x60, 0x4a, 0x90, 0x03, 0x4c, 0xd3, 0xf9, 0x4a,
			0xb0, 0x40, 0x4a, 0xb0, 0x17, 0x4a, 0xb0, 0x0f, 0x68, 0x8d, 0x27,
			0xf0, 0x4a, 0x4a, 0x4a, 0xa8, 0xb9, 0xaf, 0xf1, 0x8d, 0x28, 0xf0,
			0x60, 0x68, 0x9d, 0x5d, 0xf0, 0x60, 0x4a, 0xb0, 0x05, 0x68, 0x8d,
			0x01, 0xf0, 0x60, 0x68, 0xf0, 0x11, 0x9d, 0x75, 0xf0, 0xbc, 0x63,
			0xf0, 0xd0, 0x08, 0x9d, 0x63, 0xf0, 0xa9, 0x01, 0x9d, 0x66, 0xf0,
			0x60, 0x9d, 0x63, 0xf0, 0x9d, 0x69, 0xf0, 0x9d, 0x6c, 0xf0, 0x60,
			0x4a, 0xb0, 0x30, 0x4a, 0xb0, 0x05, 0x68, 0x9d, 0x39, 0xf0, 0x60,
			0x68, 0xa0, 0x00, 0x4a, 0x90, 0x02, 0xc8, 0x18, 0x48, 0x29, 0x07,
			0x79, 0xac, 0xf1, 0x9d, 0x78, 0xf0, 0x9d, 0x81, 0xf0, 0x68, 0x4a,
			0x4a, 0x4a, 0x18, 0x79, 0xad, 0xf1, 0x9d, 0x7b, 0xf0, 0x9d, 0x84,
			0xf0, 0xa9, 0x5b, 0x9d, 0x7e, 0xf0, 0x60, 0x4a, 0xb0, 0x05, 0x68,
			0x9d, 0xa2, 0xf0, 0x60, 0x68, 0x8d, 0xcc, 0xf0, 0x60, 0x4a, 0xb0,
			0x27, 0x4a, 0xb0, 0x0d, 0x4a, 0xb0, 0x05, 0x68, 0x8d, 0x29, 0xf0,
			0x60, 0x68, 0x9d, 0x9f, 0xf0, 0x60, 0x4a, 0xb0, 0x0f, 0x68, 0x9d,
			0x93, 0xf0, 0xa0, 0x00, 0x0a, 0x90, 0x01, 0x88, 0x98, 0x9d, 0x96,
			0xf0, 0x60, 0x68, 0x9d, 0x72, 0xf0, 0x60, 0x4a, 0xb0, 0x1c, 0x4a,
			0xb0, 0x15, 0x68, 0x9d, 0xb7, 0xf0, 0xa5, 0xfd, 0x9d, 0xb1, 0xf0,
			0xa5, 0xfe, 0x9d, 0xb4, 0xf0, 0xbd, 0x33, 0xf0, 0x9d, 0xae, 0xf0,
			0x60, 0x68, 0x6c, 0x5f, 0xf1, 0x4a, 0xb0, 0x1e, 0x68, 0xd0, 0x0a,
			0x9d, 0x4b, 0xf0, 0x9d, 0x51, 0xf0, 0x9d, 0x54, 0xf0, 0x60, 0x9d,
			0x5a, 0xf0, 0xbc, 0x4b, 0xf0, 0xd0, 0x08, 0x9d, 0x4b, 0xf0, 0xa9,
			0x01, 0x9d, 0x4e, 0xf0, 0x60, 0x68, 0x9d, 0x2a, 0xf0, 0x60, 0x4a,
			0x90, 0x08, 0x9d, 0x48, 0xf0, 0x68, 0x9d, 0x45, 0xf0, 0x60, 0x68,
			0x4a, 0xb0, 0x61, 0x4a, 0xb0, 0x25, 0x4a, 0xb0, 0x05, 0x4a, 0xa0,
			0xf0, 0xd0, 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0xa0, 0x0f, 0x85, 0xff,
			0x98, 0xb0, 0x09, 0x3d, 0x1d, 0xf0, 0x05, 0xff, 0x9d, 0x1d, 0xf0,
			0x60, 0x3d, 0x20, 0xf0, 0x05, 0xff, 0x9d, 0x20, 0xf0, 0x60, 0x4a,
			0xb0, 0x38, 0x4a, 0xb0, 0x64, 0x85, 0xff, 0xbd, 0xba, 0xf0, 0xdd,
			0xa9, 0xf1, 0xf0, 0x54, 0xfe, 0xba, 0xf0, 0xa8, 0xa5, 0xfd, 0x99,
			0xe1, 0xf0, 0xa5, 0xfe, 0x99, 0xf0, 0xf0, 0xbd, 0x33, 0xf0, 0x99,
			0x2f, 0xf1, 0xa4, 0xff, 0xb9, 0x17, 0xf1, 0xf0, 0x36, 0x85, 0xfe,
			0xb9, 0xff, 0xf0, 0x85, 0xfd, 0xb9, 0x3e, 0xf1, 0x9d, 0x33, 0xf0,
			0x60, 0xb0, 0x4b, 0x4a, 0xb0, 0x3c, 0xa8, 0xa5, 0xfd, 0x99, 0xff,
			0xf0, 0xa5, 0xfe, 0x99, 0x17, 0xf1, 0xbd, 0x33, 0xf0, 0x99, 0x3e,
			0xf1, 0xbd, 0xba, 0xf0, 0xdd, 0xa9, 0xf1, 0xf0, 0x0d, 0xfe, 0xba,
			0xf0, 0xa8, 0xa9, 0x00, 0x99, 0xf0, 0xf0, 0x60, 0xa9, 0x30, 0x2c,
			0xa9, 0x28, 0x8d, 0x00, 0xf0, 0x60, 0x0a, 0x0a, 0x0a, 0x0a, 0x4d,
			0x25, 0xf0, 0x29, 0xf0, 0x4d, 0x25, 0xf0, 0x8d, 0x25, 0xf0, 0x60,
			0x4d, 0x26, 0xf0, 0x29, 0x0f, 0x4d, 0x26, 0xf0, 0x8d, 0x26, 0xf0,
			0x60, 0x4a, 0xb0, 0x0b, 0x4a, 0xb0, 0x04, 0x8d, 0xca, 0xf0, 0x60,
			0x8d, 0xcb, 0xf0, 0x60, 0x4a, 0x90, 0x03, 0x4c, 0xa5, 0xfb, 0x4a,
			0xa8, 0xf0, 0x21, 0x88, 0xf0, 0x34, 0x88, 0xf0, 0x42, 0x88, 0xf0,
			0x4a, 0x88, 0xf0, 0x52, 0x88, 0xf0, 0x5c, 0x88, 0xf0, 0x66, 0x88,
			0xf0, 0x73, 0x29, 0x07, 0x09, 0x10, 0xb0, 0x03, 0x4c, 0xb7, 0xfa,
			0x4c, 0x7f, 0xfa, 0xac, 0x26, 0xf0, 0xb0, 0x07, 0xc8, 0x98, 0x29,
			0x0f, 0xd0, 0x07, 0x60, 0x98, 0x29, 0x0f, 0xf0, 0x04, 0x88, 0x8c,
			0x26, 0xf0, 0x60, 0xbd, 0x62, 0xf1, 0x49, 0xff, 0x2d, 0x25, 0xf0,
			0x90, 0x03, 0x1d, 0x62, 0xf1, 0x8d, 0x25, 0xf0, 0x60, 0xbd, 0x1a,
			0xf0, 0x29, 0xfb, 0x90, 0x55, 0x09, 0x04, 0xb0, 0x51, 0xbd, 0x1a,
			0xf0, 0x29, 0xfd, 0x90, 0x4a, 0x09, 0x02, 0xb0, 0x46, 0xad, 0x25,
			0xf0, 0x29, 0xf7, 0x90, 0x02, 0x09, 0x08, 0x8d, 0x25, 0xf0, 0x60,
			0xad, 0x26, 0xf0, 0x29, 0x7f, 0x90, 0x02, 0x09, 0x80, 0x8d, 0x26,
			0xf0, 0x60, 0x98, 0x8d, 0xbd, 0xf0, 0x8d, 0xdf, 0xf0, 0xc8, 0x8c,
			0xe0, 0xf0, 0x2a, 0x8d, 0xc9, 0xf0, 0x60, 0x98, 0x2a, 0x9d, 0x60,
			0xf0, 0x60, 0x4a, 0xb0, 0x27, 0x4a, 0xb0, 0x14, 0xd0, 0x02, 0xa9,
			0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x5d, 0x1a, 0xf0, 0x29, 0xf0, 0x5d,
			0x1a, 0xf0, 0x9d, 0x1a, 0xf0, 0x60, 0x0a, 0x0a, 0x0a, 0x0a, 0x4d,
			0x26, 0xf0, 0x29, 0x70, 0x4d, 0x26, 0xf0, 0x8d, 0x26, 0xf0, 0x60,
			0x4a, 0x90, 0x04, 0x9d, 0xc0, 0xf0, 0x60, 0xa8, 0xf0, 0x20, 0x88,
			0xf0, 0x40, 0x88, 0xf0, 0x63, 0x29, 0x03, 0x9d, 0xc3, 0xf0, 0xa9,
			0x00, 0x9d, 0xcd, 0xf0, 0x9d, 0xd0, 0xf0, 0x9d, 0xd3, 0xf0, 0x9d,
			0xd6, 0xf0, 0x8d, 0xd9, 0xf0, 0x8d, 0xdc, 0xf0, 0x60, 0xbd, 0xb7,
			0xf0, 0xf0, 0x05, 0xde, 0xb7, 0xf0, 0xf0, 0x12, 0xbd, 0x33, 0xf0,
			0xdd, 0xae, 0xf0, 0xd0, 0x0b, 0xbd, 0xb1, 0xf0, 0x85, 0xfd, 0xbd,
			0xb4, 0xf0, 0x85, 0xfe, 0x60, 0xa9, 0x38, 0x8d, 0x00, 0xf0, 0x60,
			0xbd, 0xba, 0xf0, 0xdd, 0xa8, 0xf1, 0xf0, 0x18, 0xde, 0xba, 0xf0,
			0xa8, 0x88, 0xb9, 0xf0, 0xf0, 0xf0, 0x0d, 0x85, 0xfe, 0xb9, 0xe1,
			0xf0, 0x85, 0xfd, 0xb9, 0x2f, 0xf1, 0x9d, 0x33, 0xf0, 0x60, 0xa9,
			0x20, 0x8d, 0x00, 0xf0, 0x60, 0xad, 0x00, 0xf0, 0x5d, 0x62, 0xf1,
			0x8d, 0x00, 0xf0, 0xa9, 0x01, 0x9d, 0x30, 0xf0, 0x60, 0xad, 0x00,
			0xf0, 0x29, 0x07, 0x8d, 0x81, 0xfc, 0xd0, 0x03, 0x20, 0xe9, 0xf2,
			0x60, 0x00, 0xa2, 0x51, 0xa0, 0xfc, 0x8e, 0x5d, 0xf1, 0x8c, 0x5e,
			0xf1, 0x20, 0xcf, 0xf1, 0xa2, 0x00, 0xa0, 0x09, 0x20, 0x00, 0xf2,
			0xa9, 0x07, 0x8d, 0x00, 0xf0, 0x8d, 0x81, 0xfc, 0x60, 0x00, 0x00,
			0x00, 0xa9, 0x00, 0x29, 0xff, 0xf0, 0xf6, 0x4c, 0x29, 0xf3, 0xa9,
			0x07, 0x8d, 0x00, 0xf0, 0x60, 0x00, 0x20, 0x60, 0xec, 0x4c, 0x60,
			0xfc, 0x20, 0x80, 0xec, 0x4c, 0x80, 0xfc };

	protected boolean MUS_mergeParts(
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */musBuf,
			Buffer_sidtt /* Buffer_sidtt<const uint_least8_t>& */strBuf) {
		Buffer_sidtt /* Buffer_sidtt<uint8_t> */mergeBuf = new Buffer_sidtt();

		int /* uint_least32_t */mergeLen = musBuf.len() + strBuf.len();

		// Sanity check. I do not trust those MUS/STR files around.
		int /* uint_least32_t */freeSpace = endian_16(_sidtune_sidplayer1[1],
				_sidtune_sidplayer1[0])
				- SIDTUNE_MUS_DATA_ADDR;
		if ((musBuf.len() + strBuf.len() - 4) > freeSpace) {
			info.statusString = _sidtune_txt_sizeExceeded;
			return false;
		}

		if (!mergeBuf.assign(new short /* uint8_t */[mergeLen], mergeLen)) {
			info.statusString = _sidtune_txt_notEnoughMemory;
			return false;
		}

		// Install MUS data #1 including load address.
		System.arraycopy(musBuf.get(), 0, mergeBuf.get(), 0, musBuf.len());

		if (!strBuf.isEmpty() && info.sidChipBase2 != 0) {
			// Install MUS data #2 _NOT_ including load address.
			System.arraycopy(strBuf.get(), 0, mergeBuf.get(), musBuf.len(),
					strBuf.len());
		}

		musBuf.assign(mergeBuf.xferPtr(), mergeBuf.xferLen());
		strBuf.erase();

		return true;
	}

	protected void MUS_setPlayerAddress() {
		if (info.sidChipBase2 == 0) {
			// Player #1.
			info.initAddr = 0xec60;
			info.playAddr = 0xec80;
		} else {
			// Player #1 + #2.
			info.initAddr = 0xfc90;
			info.playAddr = 0xfc96;
		}
	}

	protected void MUS_installPlayer(short[] /* uint_least8_t * */c64buf) {
		if (sidtune.status && (c64buf != null)) {
			// Install MUS player #1.
			int /* uint_least16_t */dest = endian_16(_sidtune_sidplayer1[1],
					_sidtune_sidplayer1[0]);
			System.arraycopy(_sidtune_sidplayer1, 2, c64buf, dest,
					_sidtune_sidplayer1.length - 2);
			// Point player #1 to data #1.
			c64buf[dest + 0xc6e] = (SIDTUNE_MUS_DATA_ADDR + 2) & 0xFF;
			c64buf[dest + 0xc70] = (SIDTUNE_MUS_DATA_ADDR + 2) >> 8;

			if (info.sidChipBase2 != 0) {
				// Install MUS player #2.
				dest = endian_16(_sidtune_sidplayer2[1], _sidtune_sidplayer2[0]);
				System.arraycopy(_sidtune_sidplayer2, 2, c64buf, dest,
						_sidtune_sidplayer2.length - 2);
				// Point player #2 to data #2.
				c64buf[dest + 0xc6e] = (short) ((SIDTUNE_MUS_DATA_ADDR
						+ sidtune.musDataLen + 2) & 0xFF);
				c64buf[dest + 0xc70] = (short) ((SIDTUNE_MUS_DATA_ADDR
						+ sidtune.musDataLen + 2) >> 8);
			}
		}
	}

}
